package event

import (
	"encoding/json"

	"open/internal/model/event/topic"
)

// TaskSyncQRCode 同步二维码任务
type TaskSyncQRCode struct {
	AppID     string `json:"app_id"`
	Platform  int32  `json:"platform"`
	JobID     int64  `json:"job_id"`
	Timestamp int64  `json:"timestamp,omitempty"`
}

// TaskCommitCode 提交代码任务
type TaskCommitCode struct {
	AppID     string          `json:"app_id"`
	Platform  int32           `json:"platform"`
	JobID     int64           `json:"job_id"`
	Biz       json.RawMessage `json:"biz"`
	Timestamp int64           `json:"timestamp,omitempty"`
}

// TaskCommitAudit 提交审核任务
type TaskCommitAudit struct {
	AppID     string          `json:"app_id"`
	Platform  int32           `json:"platform"`
	JobID     int64           `json:"job_id"`
	Biz       json.RawMessage `json:"biz"`
	Timestamp int64           `json:"timestamp,omitempty"`
}

//TaskRelease 发布代码任务
type TaskRelease struct {
	AppID     string `json:"app_id"`
	Platform  int32  `json:"platform"`
	JobID     int64  `json:"job_id"`
	Timestamp int64  `json:"timestamp,omitempty"`
}

// TaskUpdateStatus 更新小程序状态
type TaskUpdateStatus struct {
	AppID     string `json:"app_id"`
	Platform  int32  `json:"platform"`
	JobID     int64  `json:"job_id"`
	Timestamp int64  `json:"timestamp,omitempty"`
}

// Topic 事件名称
func (e TaskRelease) Topic() string {
	return topic.TaskRelease
}

// Topic 事件名称
func (e TaskCommitCode) Topic() string {
	return topic.TaskCommitCode
}

// Topic 事件名称
func (e TaskSyncQRCode) Topic() string {
	return topic.TaskSyncQRCode
}

// Topic 事件名称
func (e TaskCommitAudit) Topic() string {
	return topic.TaskCommitAudit
}

// Topic 事件名称
func (e TaskUpdateStatus) Topic() string {
	return topic.TaskUpdateStatus
}

// TaskSendWechatPubMessage 发送小程序订阅消息
type TaskSendWechatPubMessage struct {
	JobID   int64  `json:"job_id,omitempty"`
	AppID   string `json:"app_id,omitempty"`
	OpenID  string `json:"open_id,omitempty"`
	MsgType string `json:"msg_type,omitempty"`
	Page    string `json:"page,omitempty"`
	Data    string `json:"content,omitempty"`
}

// Topic 事件名称
func (e TaskSendWechatPubMessage) Topic() string {
	return topic.TaskSendWechatPubMessage
}

// TaskSyncWechatPubTemplate 同步小程序订阅消息模版
type TaskSyncWechatPubTemplate struct {
	AppID     string `json:"app_id"`
	JobID     int64  `json:"job_id"`
	Timestamp int64  `json:"timestamp,omitempty"`
}

// Topic 事件名称
func (e TaskSyncWechatPubTemplate) Topic() string {
	return topic.TaskSyncWechatPubTemplate
}
